package com.ruoyi.common.utils.spring;

import com.kfyty.loveqq.framework.core.exception.BeansException;
import com.kfyty.loveqq.framework.core.utils.IOC;

/**
 * spring工具类 方便在非spring管理环境中获取bean
 *
 * @author ruoyi
 */
public final class SpringUtils {
    /**
     * 获取对象
     */
    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) throws BeansException
    {
        return (T) IOC.getBean(name);
    }

    /**
     * 获取类型为requiredType的对象
     *
     */
    public static <T> T getBean(Class<T> clz) throws BeansException
    {
        return IOC.getBean(clz);
    }

    /**
     * @param name
     * @return Class 注册对象的类型
     *
     */
    public static Class<?> getType(String name)
    {
        return getBean(name).getClass();
    }

    /**
     * 获取aop代理对象
     */
    public static <T> T getAopProxy(T invoker)
    {
        return (T) invoker;
    }
}
